Enterprises are complex organizations that may employ long-lived software systems, such as Internet websites, that are accessible through a web-tier by a potentially unlimited number of end users. Over time, the content viewable through the website may change. The process of making content available to a website system so that the website system can distribute the content to a target audience (e.g., World Wide Web users, corporate intranet users or other audience) is generally referred to as publication. In some models of website publication, website content is developed in a development environment and then published to a production environment such that the production website system can provide content to the target audience. In some implementations, there may also be one or more test stages between the development and production environments.
A piece of content may go through a lifecycle that involves a workflow of editing, approvals, publishing and so forth. In some cases, a user managing content for a website may wish to create and manage an arbitrary collection of content. One conventional solution is for a user to store a collection of content in a particular file system folder while performing a desired operation or set of operation on the content. However, this method changes the location of the content and may break references to the content. Furthermore, using a file system folder structure to create an arbitrary group of content requires additional coordination between all users (e.g., content contributors, content managers) who may need access to the content.
Some conventional web content management systems allowed users to “tag” content items. In these systems, a tag is added to part of the properties of a content item. Such tags are inflexible and can inadvertently disrupt a content item's lifecycle. Because tagging in this manner changes the properties of the content item, the content item becomes “dirty” and may have to go back through its lifecycle of approval and publication. When a large number of content items are tagged, a large number of items may need to be reprocessed. Republication of a large number of content items that have been tagged is costly in terms of system and network resources. Furthermore, republication of a large number of content items can cause the response time of a production system to suffer because the caching tier of the production system will refresh for content that the production system sees as updated content due to republication even though the actual content may not have changed.
Content management problems may be exacerbated for multi-lingual websites. Efforts have been made in conventional content management systems to manage multilingual content using either a translation-centric or an object-centric model. Translation-centric solutions manage translations of content as distinct objects and do not associate different translated versions of the content with each other. Object-centric solutions model translated versions of content as different values/versions of the same object, and require additional metadata to identify what translated versions of content are related on the web-tier. Object-centric solutions require independent management for each of the translated versions of content on the web tier. More specifically, translation-centric solutions model translations as different objects to provide independent life-cycles for translations. However, translation-centric solutions suffer from high reference maintenance cost associated with continual modification to existing software to refer to new translations. Object-centric solutions model translations as different values of the same object, thereby avoiding the reference maintenance cost problem. However, object-centric solutions suffer from tight coupling of translations to the life-cycle of a single object. This increases maintenance costs when translations need to be decoupled, for instance, in the event those translations diverge, or if they otherwise need to be managed independently.
Decoupling different translations into separate objects presents its own problems, particularly as content is updated. Typically a change is first made in a source language (e.g., English) and then propagated to other translations of the content. However, in multilingual organizations, updates to different translations of content may also happen simultaneously. For example, in a multinational news organization, one user may update the English version of a breaking news story, while another user may simultaneously update the German version in a different manner, while the French version remains unchanged. Difficulties arise in preventing conflicts between the various translations and ensuring that the objects containing the various translations of the content remain up to date as the content is updated/changed.